Skip to content

Prod: polish release UI and rating persistence - #344

Merged
TThanos3000 merged 1 commit into
prod/program-analytics-ui-portfrom
prod/release-ui-rating-polish
Sep 10, 2026
Merged

TThanos3000 merged 1 commit into
prod/program-analytics-ui-portfrom
prod/release-ui-rating-polish

Conversation

@TThanos3000

Copy link
Copy Markdown
Contributor

База и границы

Что исправлено

Rating persistence

Backend возвращает scored: boolean и rated_experts: number[], но Angular ожидал scoredExpertId и User[]. ProjectRate приведён к фактическому контракту: project.scored теперь authoritative для текущего эксперта, ratedExperts хранит только numeric user IDs, runtime-зависимость от scoredExpertId удалена.

Причина Criteria not found после reload: внутренний ProjectRatingComponent создавал FormGroup из backend criteria, но CVA отправлял parent control только после valueChanges. При edit/confirm без касания parent оставался {}/null, а DTO становился пустым.

CVA теперь синхронизирует полный snapshot после безопасной готовности criteria, registerOnChange() и writeValue(), без таймеров и fake events. Repository строит DTO по полному backend-набору criteria и сохраняет bool/int/str conversions. Покрыты fresh rating, reload/edit без касания, изменение одного criterion с сохранением остальных, непустой полный payload и successful edit без повторного роста ratedCount.

Deadline 409

HttpErrorResponse с 409 + evaluation_deadline_passed переводит карточку в controlled closed state: modal закрывается, form readonly, edit/повторный submit блокируются, CTA и tooltip показывают завершение срока. Raw backend body не выводится. Существующий 400 max-rates остаётся отдельным сценарием.

UI polish

  • Для name/problem закреплены отдельные зоны [text][error icon][counter]; main grid выровнен по верхнему краю, asset grid не менялся.
  • RegionSelect сам размещает error icon отдельно от clear/dropdown controls.
  • Profile title вынесен из absolute avatar в normal flow, поддерживает до двух строк и не затрагивает project header.
  • Set-password использует тот же native input + accessible sibling button pattern для обоих полей, отдельные reveal states, name, autocomplete="new-password", dynamic aria-label/aria-pressed.
  • Текст Назначений всего заменён на Назначений без изменения count, endpoint, scope, drilldown и DOM behavior.

Проверки

Node 20.20.2, npm 10.8.2:

  • npm ci: exit 0, 1659 packages; SHA256 package.json и package-lock.json до/после совпадают.
  • Exact npm run format:check: exit 0 на LF checkout exact final head. Windows checkout с CRLF ожидаемо считает все базовые файлы изменёнными; scoped check текущих 23 TS/HTML/MD файлов: exit 0.
  • npm run lint:ts: exit 0, 0 errors, 6 существующих warnings.
  • Scoped Stylelint трёх изменённых SCSS: exit 0.
  • git diff --check: exit 0.
  • Targeted follow-up: 12 files, 127/127 tests.
  • Regression изменённых контуров Prod: port program analytics and participation UI #343: 59 files, 565/565 tests.
  • Full suite в стабильном sequential fork-mode: 362/362 files, 1513/1513 tests passed. После teardown процесс получает известный ngx-autosize: window is not defined; на untouched base Prod: port program analytics and participation UI #343 проблема воспроизводится изолированно после 4/4 passed tests.
  • Exact default npm run test:ci на Windows блокируется до тестов параллельной инициализацией Angular TestBed (NG0401); untouched base воспроизводит то же поведение (361 suites). Linux CI обязателен как final exact test gate.
  • npm run build:prod: exit 0, production bundle собран. Native Windows svg-sprite не раскрывает quoted glob и временно создаёт пустой sprite; untouched base даёт тот же результат. Tracked sprite восстановлен. Linux CI обязателен для финальной проверки sprite-generation.

Browser smoke

  • /auth/reset_password?token=smoke-token: проверен на 390 / 768 / 1280, без horizontal overflow; оба eye-control независимы, keyboard activation работает, name и autocomplete корректны.
  • Rating/project/profile protected states покрыты component/regression tests. Полный authenticated browser smoke локально не выполнялся из-за отсутствия безопасных test credentials/fixture и остаётся post-review/CI environment check.

Перед merge

Нужен чистый Linux Node 20 gate для exact npm run test:ci и корректной генерации sprite в npm run build:prod. Этот Draft PR не запускает deploy и не должен merge-иться в master напрямую.

@TThanos3000
TThanos3000 marked this pull request as ready for review September 10, 2026 18:59
@TThanos3000
TThanos3000 merged commit c759a9c into prod/program-analytics-ui-port Sep 10, 2026
@TThanos3000
TThanos3000 deleted the prod/release-ui-rating-polish branch September 10, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants